package br.pucrio.inf.aaaong.models.domain.form.validation;

import java.util.ArrayList;
import java.util.List;

import br.com.caelum.vraptor.ioc.Component;
import br.pucrio.inf.aaaong.models.domain.form.beans.PreInscricaoFormBean;
import br.pucrio.inf.aaaong.models.domain.form.fields.PreInscricaoFields;
import br.pucrio.inf.aaaong.models.form.errors.FormError;
import br.pucrio.inf.aaaong.models.form.validation.FormValidator;

@Component
public class PreInscricaoFormValidator {
	private FormValidator validator;
	
	public PreInscricaoFormValidator(FormValidator validator) {
		this.validator = validator;
	}
	
	public List<FormError> getErrorsFrom(PreInscricaoFormBean form) {
		List<FormError> errors = new ArrayList<FormError>();
		errors.addAll(
			validator.validateWith(PreInscricaoFields.TELEFONES_FIXOS, form.getTelefones())
		);
		errors.addAll(
			validator.validateWith(PreInscricaoFields.CELULARES, form.getCelulares())
		);
		errors.addAll(
			validator.validateWith(PreInscricaoFields.BAIRRO, form.getBairro())
		);
		errors.addAll(
			validator.validateWith(PreInscricaoFields.CEP, form.getCep())
		);
		errors.addAll(
			validator.validateWith(PreInscricaoFields.CIDADE, form.getCidade())
		);
		errors.addAll(
			validator.validateWith(PreInscricaoFields.CURSO_SUPERIOR, form.getCursoSuperior())
		);
		errors.addAll(
			validator.validateWith(PreInscricaoFields.CURSO_TECNICO, form.getCursoTecnico())
		);
		errors.addAll(
			validator.validateWith(PreInscricaoFields.DATA_DE_INSCRICAO, form.getDataDaInscricao())
		);
		errors.addAll(
			validator.validateWith(PreInscricaoFields.DATA_NASCIMENTO, form.getDataNascimento())
		);
		errors.addAll(
			validator.validateWith(PreInscricaoFields.ESTADO, form.getEstado())
		);
		errors.addAll(
			validator.validateWith(PreInscricaoFields.INDICACAO, form.getIndicacao())
		);
		errors.addAll(
			validator.validateWith(PreInscricaoFields.INSTITUICAO, form.getInstituicaoDeEnsino())
		);
		errors.addAll(
			validator.validateWith(PreInscricaoFields.LOGRADOURO, form.getLogradouro())
		);
		errors.addAll(
			validator.validateWith(PreInscricaoFields.NIVEL_ESCOLAR, form.getNivelEscolar())
		);
		errors.addAll(
			validator.validateWith(PreInscricaoFields.NOME, form.getName())
		);
		errors.addAll(
			validator.validateWith(PreInscricaoFields.NUMERO_DE_INSCRICAO, form.getNumeroDeInscricao())
		);
		errors.addAll(
			validator.validateWith(PreInscricaoFields.NUMERO_ENDERECO, form.getNumeroEndereco())
		);
		errors.addAll(
			validator.validateWith(PreInscricaoFields.PAIS, form.getPais())
		);
		errors.addAll(
			validator.validateWith(PreInscricaoFields.PERIODO, form.getPeriodo())
		);
		errors.addAll(
			validator.validateWith(PreInscricaoFields.PONTO_REFERENCIA_END, form.getPontoReferenciaEndereco())
		);
		errors.addAll(
			validator.validateWith(PreInscricaoFields.SERIE_BASICO, form.getSerieBasico())
		);
		errors.addAll(
			validator.validateWith(PreInscricaoFields.SERIE_TECNICO, form.getSerieTecnico())
		);
		errors.addAll(
			validator.validateWith(PreInscricaoFields.TURNO_ESCOLAR, form.getTurnoEscolar())
		);
		return errors;
	}

}
